<%@page import="java.util.ArrayList"%>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<% response.setContentType("text/html; charset=UTF-8");%>
<% request.setCharacterEncoding("utf-8");%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Random" %>
<%@page import="controller.ModuleExamController, dto.*" %>

<%!
    // random một số nguyên trong khoảng (a, b)
    public int randomInt(int a, int b) {
        Random random = new Random();
        while (true) {
            int result = random.nextInt() % b;
            if (result >= a) {
                return result;
            }
        }
    }
%>

<%
    ModuleExamController ctrl = new ModuleExamController();
    /*
     * THÊM 1 ĐỀ THI MỚI
     */
    String maLDT = request.getParameter("maldt");
    if (maLDT != null) {
        try {
            int max = ctrl.getDeThiLonNhat();
            String maDT = Integer.toString(max + 1);

            if (ctrl.insertDeThi(maDT, maLDT) == true) {
                out.println("Phát sinh thành công mã đề : " + maDT); // phát sinh thành công
            }

            /*
             * THÊM CÁC CÂU HỎI CHO ĐỀ THI MỚI THÊM
             */
            LoaiDeThiDTO info = ctrl.getLoaiDeThi(maLDT);
            int socaude = info.getSocaude();
            int socautb = info.getSocautb();
            int socaukho = info.getSocaukho();

            out.println("Số lượng câu hỏi dễ : " + Integer.toString(socaude));
            out.println("Số lượng câu hỏi trung bình : " + Integer.toString(socaude));
            out.println("Số lượng câu hỏi khó : " + Integer.toString(socaukho));

            int thutu = 1;

            // Thêm các câu dễ
            int soluong = ctrl.getSoLuongCauHoiDe();
            for (int i = 0; i < socaude;) {
                int random = randomInt(0, soluong);
                ArrayList dsCauHoiDe = ctrl.getDSCauHoiDe(random);
                for (int j = 0; j < dsCauHoiDe.size(); j++) {
                    CauHoiDTO cauhoi = (CauHoiDTO) dsCauHoiDe.get(j);
                    String maCH = Integer.toString(cauhoi.getMaCH());
                    try {
                        if (ctrl.themCauHoiVaoDeThi(maDT, maCH, thutu) == true) {
                            out.println("Đã thêm 1 câu hỏi dễ. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
                        }
                        thutu++;
                        i++;
                        break;
                    } catch (Exception e) {
                    }
                }
            }
            out.println("Đã thêm xong các câu hỏi dễ");

            // Thêm các câu trung bình
            soluong = ctrl.getSoLuongCauHoiTB();
            for (int i = 0; i < socautb;) {
                int random = randomInt(0, soluong);
                // lay ds cac cau hoi tb
                ArrayList dsCauHoiTB = ctrl.getDSCauHoiTB(random);
                for (int j = 0; j < dsCauHoiTB.size(); j++) {
                    CauHoiDTO cauhoi = (CauHoiDTO) dsCauHoiTB.get(j);
                    String maCH = Integer.toString(cauhoi.getMaCH());
                    try {
                        if (ctrl.themCauHoiVaoDeThi(maDT, maCH, thutu) == true) {
                            out.println("Đã thêm 1 câu hỏi dễ. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
                        }
                        thutu++;
                        i++;
                        break;
                    } catch (Exception e) {
                    }
                }
            }
            out.println("Đã thêm xong các câu hỏi trung bình");

            // Thêm các câu khó
            soluong = ctrl.getSoLuongCauHoiKho();
            for (int i = 0; i < socautb;) {
                int random = randomInt(0, soluong);
                // lay ds cac cau hoi kho
                ArrayList dsCauHoiKho = ctrl.getDSCauHoiKho(random);
                for (int j = 0; j < dsCauHoiKho.size(); j++) {
                    CauHoiDTO cauhoi = (CauHoiDTO) dsCauHoiKho.get(j);
                    String maCH = Integer.toString(cauhoi.getMaCH());
                    try {
                        if (ctrl.themCauHoiVaoDeThi(maDT, maCH, thutu) == true) {
                            out.println("Đã thêm 1 câu hỏi dễ. Số thứ tự : " + Integer.toString(thutu) + ". Mã câu hỏi : " + maCH);
                        }
                        thutu++;
                        i++;
                        break;
                    } catch (Exception e) {
                    }
                }
            }
            out.println("Đã thêm xong các câu hỏi khó");

            response.sendRedirect("thi_lambai.jsp?maDT=" + maDT);

        } catch (Exception e) {
            out.println(e.getMessage());
        }
    }
%>